home *** CD-ROM | disk | FTP | other *** search
/ Workbench Design / WB Collection.iso / workbench werkzeuge / cpu tools / cpu_control / cpucontrol.guide (.txt) < prev    next >
Amigaguide Document  |  1996-04-07  |  34KB  |  599 lines

  1. @database 003a6898-0
  2. @master CC_Main.guide
  3. @$VER: 1.0
  4. @node "Main" "No title"
  5.                          @{b}        CpuControl V1
  6.                          Copyright 1995 by Oliver Goss
  7.                            Release 1.05 / 25.11.1995
  8. @{ub}
  9.  @{fg highlight}                       CPUCONTROL IS A CARDWARE PRODUCT
  10.            PLEASE READ THE 'DISTRIBUTION' SECTION FOR MORE DETAILS.@{fg text}
  11.     @{u}CONTENTS:@{uu}
  12.     @{"
  13. Introduction
  14. " link "Document_1" 0}     What's the idea behind CpuControl
  15.                     
  16.     @{"
  17. Features
  18. " link "Document_7" 0}     CpuControl's abilities in detail
  19.     @{"
  20. Requirements
  21. " link "Document_2" 0}     What you need to use CpuControl
  22.     @{"
  23. Installation
  24. " link "Document_0" 0}     Installing CpuControl on your system
  25.     @{"
  26. Usage
  27. " link "Document_4" 0}     How to use ...
  28.     @{"
  29. Technical
  30. Details
  31. " link "Document_9" 0}     Some stuff for the programmers ...
  32.     @{"
  33. Compatibility
  34. " link "Document_5" 0}     Successfully tested configurations
  35.     @{"
  36. Author's
  37. notes
  38. " link "Document_8" 0}     Some remarks from me ?!
  39.     @{"
  40. Distribution
  41. " link "Document_6" 0}     Details about distribution
  42.     @{"
  43. contact
  44. " link "Document_3" 0}     If you feel the need ...
  45.     @{"
  46. History
  47. " link "Document_12" 0}     Curriculum vitae
  48.     @{"
  49. Troubleshooting
  50. " link "Document_11" 0}     If you have a problem with CpuControl
  51.     @{"
  52. " link "Document_10" 0}     Features that might be added some day
  53. @endnode
  54. @node "Document_0" "
  55. Installation
  56. @{b}Installing CpuControl:@{ub}
  57. Installing CpuControl is really no big deal. Just copy the executable to your C:
  58. directory  or  any  other  directory you might find useful. If you want, you can
  59. change the filename into a shorter name. I recommend to replace the original CPU
  60. command  (as  it  comes  along  with the OS 2.0+ distribution), since CpuControl
  61. offers the same functionality with somewhat improved capabilities.
  62. @endnode
  63. @node "Document_1" "
  64. Introduction
  65. @{b}Introduction:@{ub}
  66. CpuControl started some time ago as a programming  exercise.  The  idea  was  to
  67. create  a  program  that  uses  the  advanced features of Motorola's MC68020 and
  68. (especially) MC68030 processors  like  Cache  manipulation,  MMU  code  and  the
  69. enhanced  addressing  modes.  So  I  decided  to do some replacement for the CPU
  70. command as it comes along with the Workbench distribution. CPU is a very  useful
  71. tool,  but  it  could  need some improvement, anyway. There were several aspects
  72. which I was not quite satiesfied with as the following examples may illustrate:
  73. o CPU accepts  any command line if only the  keywords are valid. Things like CPU
  74.   CACHE NOCACHE CACHE CACHE FASTROM NOFASTROM ... are processed without problems
  75.   problems, since CPU executes every option one after another. So the Caches are
  76.   acticated,   disactivated,  activated,  and  so  on.  This  is  not  really  a
  77.   disadvantage, but I think a good command line parser should reject such crap.
  78. o When the FASTROM feature is activated, CPU moves the VectorBase  into  FastRam
  79.   in  order  to  improve  interrupt  handling.  This  cannot  be  undone without
  80.   restarting the machine.
  81. o The MMU table used by the FASTROM option is not very efficient (it  is  larger
  82.   than it needs to be, I mean).
  83. But CpuControl was not intended as a simple  CPU  clone.  Due  to  the  hardware
  84. restrictions  of  my  old  A2000  I  was  forced (almost ...) to use the FASTROM
  85. feature ever since I got my A2630 accelerator board. This occupies  512K  of  my
  86. precious  32Bit RAM (4MB ain't too much, especially when you have got a graphics
  87. board !). The memory loss cannot be helped, but it *should* be possible  to  use
  88. this 512K not only for a simple copy of my ROM contents. So I implemented a real
  89. nice KICK option that makes it possible to load and activate  another  KickStart
  90. version  (see @{"Features" link "Document_7" 0} section for  details). I've been looking for a MMU based
  91. SoftKicker for some time, but  I  found  none  for  my  hardware  configuration.
  92. There's SoftKick for A3000s and Set040 for 68040 based machines, but none for my
  93. shitty old A2000 ! The other SoftKickers like SKick and MKick couldn't  convince
  94. me, either (the Patchtables were not up to date for Kick 3.1).
  95. @endnode
  96. @node "Document_2" "
  97. Requirements
  98. @{b}Requirements:@{ub}
  99. CpuControl is designed to be used  with  MC68020/68030  processors  (Commodore's
  100. [R.I.P.] accelerator boards A2620 and A2630 are perfectly fit). If it is started
  101. on a system with a 68000/68010 or 68040, it quits with an error message. At this
  102. point  you  might  ask  why  your  MC68040 processor is not supported. Well, the
  103. reason is that especially MMU coding is quite different from the '030.  Since  I
  104. don't  own  a 68040 equipped machine (yet) and the necessary documentation, I am
  105. not able to support this processor at the present  time.  But  this  is  no  big
  106. disadvantage,  because there's a program out there on the Aminet (called Set040)
  107. which is especially handcrafted for the 68040, including softkicking of other OS
  108. versions.
  109. Here's now what you need to use ALL features of CpuControl:
  110. o  OS 2.04 or better
  111. o  MC68020 or MC68030 (FPU 68881 or 68882 optional)
  112. o  MMU 68851 or internal 68030 MMU
  113. o  2 MB 32Bit FastMem (the more, the better !)
  114. o  512K ChipMemory (notice that a softkicked OS might want more !)
  115. o  any Chipset (OCS, ECS, AA)
  116. Please note that a functional MMU is needed for  full  functionality.  On  68020
  117. systems without 68851 or on 68EC030 (EC = economy ?) systems you can not use the
  118. FASTROM  and  KICK  options  !  CpuControl  is  able  to  detect  a  missing  or
  119. non-functional MMU and quits with a warning if you try to use this options.
  120. If you want to use the KICK option, you need a valid ROM image  that  meets  the
  121. following conditions:
  122. o  the OS version must be greater or equal to OS 2.04
  123. o  the file must contain  plain Kickstart data, i.e. no Superkickstart files  or
  124.    ZKick files are  supported at the moment
  125. o  the Kickstart image MUST be fit for your particular system,  i.e. you  cannot
  126.    use  an  A4000  kickfile on an A2000 ! This  might change in future releases,
  127.    although it is not  very likely, since  it  requires  heavy  patches  in  the
  128.    Kickstart code.
  129. The easiest way to get a suitable kickfile is to run  the  'SaveROM'  tool  that
  130. comes  along  with  this  distribution  on  an  Amiga  that is equipped with the
  131. required ROM version. This tool reads the contents  of  the  installed  ROM  and
  132. writes  it  into  a  specified  file.  Be sure that no FASTROM option is active,
  133. because some software might patch the Kickstart in RAM  without  correcting  the
  134. checksum  (the  software of the Piccolo gfx board does so when used with OS 2.xx
  135. in order to use 256 colors in the WB emulation). This causes  a  checksum  error
  136. when softkicking the OS.
  137. IMPORTANT NOTES:    THE KICKSTART SOFTWARE IS COPYRIGHTED BY AMIGA TECHNOLOGIES.
  138.                     IT  IS ILLEGAL TO USE COPIES OF THE KICKSTART SOFTWARE WITH-
  139.                     OUT PERMISSION OF THE COPYRIGHT OWNER.
  140.                     USING ILLEGAL COPIES OF THE KICKSTART STUFF IS THEREFORE NOT
  141.                     ENCOURAGED  BY  ME,  EVEN  THOUGH  CPUCONTROL OFFERS YOU THE
  142.                     POSSIBILITY TO DO SO !
  143.                     THIS DISTRIBUTION DOES NOT CONTAIN ANY KICKSTART FILES.
  144. Currently CpuControl does not support OS versions below  2.04  for  softkicking,
  145. because  I  think  there's  no  need  to  use  those  1.x  versions  any longer.
  146. Nevertheless, feel free to contact me if you want the ability  to  softkick  1.x
  147. versions to be implemented. Maybe you can even convince me to code a special 1.x
  148. version of CpuControl.
  149. @endnode
  150. @node "Document_3" "
  151. contact
  152. @{b}How to contact me:@{ub}
  153. Here's my address for those who feel like contacting me:
  154.    Oliver Goss
  155.    Gnesener Str. 4
  156.    93057 Regensburg
  157.    Germany
  158. Unfortunately I don't have an email account, but my good friend Christian (bless
  159. him)  has  allowed  me  to  provide  you  with his email address so that you can
  160. contact me via email. Just put my name in the subject line.
  161.    christian.rotter@rz.fh-regensburg.d400.de
  162. @endnode
  163. @node "Document_4" "
  164. Usage
  165. @{b}Usage:@{ub}
  166. CpuControl is a  shell-based  program,  i.e.  it  cannot  be  started  from  the
  167. Workbench  (you  can  use 'Execute Command' from the Workbench menu if you don't
  168. want to open a shell window).
  169. CpuControl supports three different  command  line  templates.  Only  one  valid
  170. template can be used at one time, i.e. the arguments of one template must not be
  171. mixed with another template. If you use arguments that are not supported by your
  172. system,  you  will receive an error message in some cases, e.g. when the FASTROM
  173. option is used on a 68EC030 system. All Cache and Burst related arguments  adapt
  174. automatically to your system.
  175. @{u}TEMPLATE 1:@{uu}
  176. CpuControl CACHE/S,NOCACHE/S,DCACHE/S,NODCACHE/S,ICACHE/S,NOICACHE/S,
  177.            BURST/S,NOBURST/S,DBURST/S,NODBURST/S,IBURST/S,NOIBURST/S,
  178.            FASTROM/S,NOFASTROM/S,MOVEVBR/S,RESETVBR/S.
  179. This command template  is  similar  to  the  CPU  command.  It  covers  most  of
  180. CpuControl's features.
  181. @{b}Switches/Keywords:                      Function:@{ub}
  182. no arguments            Reports some status information (Just try it).
  183. ?                       Display some help.
  184. CACHE                   Enable CPU Caches.
  185. NOCACHE                 Disable CPU Caches.
  186. DCACHE                  Enable Data Cache.
  187. NODCACHE                Disable Data Cache.
  188. ICACHE                  Enable Instruction Cache.
  189. NOICACHE                Disable Instruction Cache.
  190. BURST                   Enable Bursts (Data and Instruction).
  191. NOBURST                 Disable Bursts
  192. DBURST                  Enable Data Burst.
  193. NODBURST                Disable Data Burst.
  194. IBURST                  Enable Instruction Burst.
  195. NOIBURST                Disable Instruction Burst.
  196. FASTROM                 Move Kickstart ROM into 32-Bit RAM (MMU required !)
  197. NOFASTROM               Remove FASTROM.
  198. MOVEVBR                 Move VBR into 32-Bit RAM.
  199. RESETVBR                Reset VBR to location $00000000.
  200. @{i}Example@{ui}:  The command line 'CpuControl CACHE BURST FASTROM MOVEVBR' enables  all
  201.           Caches  and  Bursts  and  moves both the Kickstart and the Vector Base
  202.           into FastRAM, boosting the system performance to the maximum.
  203. @{u}TEMPLATE 2:@{uu}
  204. CpuControl  KICK/A FILE/A
  205. This command template is used to softkick a Kickstart file. Please note that the
  206. full  path  to the Kickfile has to be given. A functional MMU is required to use
  207. this option !
  208. @{i}Example@{ui}:  The command line 'CpuControl KICK  Devs:Kickstarts/Kick3.1'  tries  to
  209.           load  the specified Kickstart and resets the machine afterwards. It is
  210.           not possible to load the same OS version as it is found in the ROM. If
  211.           you  try  to  do  so,  CpuControl  just  quits,  thus  giving  you the
  212.           possibility to use it as the first command  in  your  startupsequence,
  213.           i.e.  there's  no  need  to  check  if the desired OS has already been
  214.           softkicked.
  215. @{u}TEMPLATE 3:@{uu}
  216. CpuControl  UNKICK/A
  217. This command template is used to remove  a  softkicked  OS.  All  other  RomTags
  218. remain  untouched.  Any  residents  hooked in via ColdCapture or CoolCapture are
  219. removed, though.
  220. @{i}Example@{ui}:  The command line 'CpuControl UNKICK' kills the KICK Romtag and reboots
  221.           the computer with the ROM Kickstart.
  222. @endnode
  223. @node "Document_5" "
  224. Compatibility
  225. @{b}Compatibility:@{ub}
  226. CpuControl has been successfully tested on the following configurations.  Please
  227. note that some features are not available on certain systems.
  228. My System:
  229. - A2000, 1M Chip memory, 2 x 3.5" floppy drives, Kick 1.3 & 2.04
  230. - A2630 with 4M 32-Bit memory, tuned 68882 with 30MHz
  231. - Piccolo Graphics Board with 2M memory
  232. - Nexus SCSI with Quantum LP105S and LP52S drives
  233. - Flickerfixer (DeInterlace Card)
  234. - Vortex GoldenGate 386SX PC-Emulator with 4.5M RAM, external  3.5"  HD  floppy,
  235.   Seagate ST3243A harddisk, TARGA SVGA board and serial card.
  236. CpuControl seems to work fine with the following MMU based Software:
  237.  - GigaMem
  238.  - Enforcer
  239. @endnode
  240. @node "Document_6" "
  241. Distribution
  242. @{b}Disclaimer:@{ub}
  243. No warranties of any kind are made as to the funtionality of this  program.  You
  244. are  using  it at your own risk, i.e. the author can not be held liable for data
  245. loss or any other kind of damage caused by the use of CpuControl.
  246. @{b}Copyright:@{ub}
  247. All files in this distribution are Copyright 
  248.  1995 by Oliver Goss.  The  author
  249. retains all rights to the program.
  250. CpuControl is distributed as CARDWARE. If you find the program useful,  you  are
  251. encouraged to send me a nice postcard. Please note that CpuControl is definitely
  252. NOT Public Domain Software, i.e. you are not allowed to alter  the  contents  of
  253. this distribution in any way (see below !).
  254. @{b}Distribution:@{ub}
  255. CpuControl may be freely distributed in  any  way,  as  long  as  the  following
  256. conditions are met:
  257. 1. No fees may be charged for its distribution, except a reasonable  charge  for
  258.    media and shipping, etc.
  259. 2. The distribution must contain all files as provided by  me  in  the  original
  260.    archive.
  261. 3. The files contained in this distribution MUST NOT  be  changed  nor  be  used
  262.    (complete  or  in  part)  in  other products. It is permitted to add faithful
  263.    translations of the documentation to the archive  as  long  as  the  original
  264.    documentation is enclosed.
  265. 4. CpuControl must not be used in commercial products.
  266. If you have a question about the distribution or copyright stuff that is  not
  267. covered  by  the above lines, please feel free to contact the @{"author" link "Document_3" 0} :) .
  268. @endnode
  269. @node "Document_7" "
  270. Features
  271. Features:
  272. CpuControl offers you the following features (random order):
  273.  o Complete Cache and Burstmode control
  274.  o FastROM option
  275.  o Ability to move (and remove) the Vector Base into FastRAM
  276.  o Smarter Command Line interface compared to stock CPU command
  277.  o Comprehensive error messages
  278.  o Nice status message
  279.  o Ability to softkick any OS version from 2.xx to 3.xx
  280.  o ColdCapture and CoolCapture vectors are not used
  281.  o 100% handcrafted 68020+ assembler code
  282. @endnode
  283. @node "Document_8" "
  284. Author's
  285. notes
  286. @{b}Author's Notes:@{ub}
  287. I developed CpuControl to meet my personal needs and thus it might be completely
  288. useless  to  you.  However, this piece of software has been released in the hope
  289. that some Amiga users have a need for it. So if you use CpuControl from time  to
  290. time, please drop me postcard.
  291. Special thanks go to the following persons:
  292. - Christian Rotter for providing his email address
  293. - Stefan Thielscher and Peter Simons for their articles 'Generationswechsel'  in
  294.   the AmigaPlus magazine. Especially the MMU related articles were indispensable
  295.   for the development of CpuControl.
  296. - Daniel Zenchelsky for ZKick V3.01. The sourcecode was  a  great  help  when  I
  297.   created the KICK option.
  298. - Greg Tibbs for  SoftBoot  V3.31.  Again  the  sourcecode  gave  me  a  lot  of
  299.   inspiration ;) .
  300. NOTE:
  301. CpuControl  was  in  part  inspired  by  sourcecodes  from  Greg  Tibbs,  Daniel
  302. Zenchelsky  and  Stefan  Thielscher.  The  code itself is my own design, i.e. no
  303. parts have been copied. Nevertheless  some  resemblance  may  occur  in  certain
  304. cases.
  305. @endnode
  306. @node "Document_9" "
  307. Technical
  308. Details
  309. @{b}Technical details:@{ub}
  310. This paragraph is intended  for  the  programmers  among  you.  It  offers  some
  311. background  information  over the implementation of the FASTROM option, the KICK
  312. option and some other stuff. The CACHE/BURST/... options are quite simple, so  I
  313. decided  not  to bore you with an explanation about how to disable the processor
  314. caches etc. ;) . However, this text does not offer much information about how to
  315. program the MMU or something like that. That would have been beyond the scope of
  316. this documentation.
  317. One important feature of CpuControl is its ability  to  detect  the  missing  or
  318. non-functional  MMU  in  an  68EC030 processor. This is not too easy to achieve,
  319. since the MC68EC030 has a functional TC register although the MMU itself may  be
  320. less than functional.
  321. Another possibility that has to be considered is a 68020  based  system  without
  322. MMU  (as  it  is  the  case with most 68020 boards or in an Amiga 1200). The MMU
  323. detection code must therefore be able to handle the LINE-F exception  caused  by
  324. the execution of a MMU instruction like PMOVE.L TC,(A0) on 68020 systems without
  325. MMU. This is achieved by a small exception handler  that  redirects  the  LINE-F
  326. vector  temporarily  to  some  code  that  catches  the  exception  and  sets an
  327. appropriate flag to FALSE. The return address on the supervisor  stack  is  then
  328. modified  so  that the instruction that caused the exception is skipped when the
  329. handler returns to the normal program flow. After  that  the  LINE-F  vector  is
  330. restored with its former contents.
  331. At this point we know whether MMU instructions can be executed or not.  But  the
  332. fact  that  a  MMU instruction can be executed without raising an exception does
  333. not necessarily mean that a functional MMU is available. So we have  to  perform
  334. another  test to be sure that the MMU is really functional. Therefore CpuControl
  335. sets up a very simple MMU table  that  maps  the  whole  address  space  of  the
  336. processor  (4  Gigabyte),  using  two  Early Termination descriptors. Any memory
  337. access *should* now set the Used Bit in at least one of the descriptors. If this
  338. is  the  case, we can be (almost) sure that the MMU is functional. However, this
  339. test may not be 100% reliable. (The idea for  this  test  has  been  taken  from
  340. Stefan  Thielscher's  FastROM  program  as published on the AmigaPlus Disk 9/94.
  341. Hope you don't mind, Stefan ;) .)
  342. If these initial tests have been successfully passed, you are able  to  use  the
  343. FASTROM  and the KICK option, as long as your MMU is not yet occupied by another
  344. program.
  345. The principle of the  FASTROM  option  is  not  very  difficult  to  understand.
  346. CpuControl  just  tries to allocate a sufficient buffer in your FastMem area and
  347. copies the ROM contents into this buffer. The buffer is  received  via  AllocMem
  348. with  the  MEMF_REVERSE  flag set, i.e. AllocMem tries to allocate the buffer at
  349. the end of your FastMem area in order to reduce memory fragmentation  since  the
  350. buffer  MUST  be  aligned to a 32 KByte boundary due to the used pagesize in the
  351. MMU table.
  352. (NOTE: Ralph Babel writes in his Guru Book that the MEMF_REVERSE option does not
  353. work  reliably  on  2.xx  systems.  I didn't discover any difficulties with this
  354. option, but if you do so, please let me know.)
  355. OK, let's go on. The next thing to do is to allocate a small buffer for the  MMU
  356. table  and  to  generate  the  necessary  translation  tree.  I used the maximum
  357. pagesize of 32 KByte here to get a small MMU table. After that  the  translation
  358. tree is activated and any access to the ROM area at $F80000 is now redirected to
  359. the FastMem buffer with the ROM image. Please note that the  FASTROM  option  is
  360. useful  ONLY on Amigas that are originally based on the 68000 processor like the
  361. A500(+), A2000, CDTV. The newer Amiga models already have 32 Bit access  to  the
  362. ROM.  Well, there's now only one thing more to say about the FASTROM option. The
  363. FASTROM options of CpuControl and the stock CPU command are NOT compatible, i.e.
  364. you  can  not  remove  a  CPU  FASTROM  with a CPUCONTROL NOFASTROM ! CpuControl
  365. recognizes foreign MMU tables since all of its own MMU tables contain a  special
  366. identification longword.
  367. Now we come to the most advanced feature of CpuControl, namely the KICK  option.
  368. This  option  required  a lot of time and headscratching to be implemeted. It is
  369. strongly inspired by the sourcecodes of ZKICK by Dan Zenchelsky and SOFTBOOT  by
  370. Greg  Tibbs,  but  the implementation is my very own and no code has been copied
  371. from the named sources. The KICK option  is  in  part  similar  to  the  FASTROM
  372. option.  The  great  difference  that  has to be taken care of is that it is not
  373. sufficient to just load another Kick version into a buffer and to  redirect  the
  374. ROM  accesses  to  this buffer as it is done by the FASTROM option. Here we must
  375. rebuild *all* system  structures  according  to  the  requirements  of  the  new
  376. Kickstart.  To achieve this, we have to reset the computer and force it to enter
  377. the restart code in the loaded Kick image. This is  far  more  difficult  as  it
  378. sounds,  as  I must discover. The greatest problem is that it is not possible to
  379. perform a proper warmboot (reset) when  the  MMU  is  activated.  You  may  have
  380. noticed  this  when you tried to use exec's ColdReboot routine with an activated
  381. FASTROM. I tried to find the reason for this behaviour, but I'm not sure whether
  382. my explanation is correct or not. Let me know if you have a better one.
  383. The critical instruction in this case is the CPU's RESET command. Whenever  this
  384. instruction  is executed while the MMU is active, the computer crashes. At first
  385. I thought that the RESET instruction also disables the MMU, but this is  not  so
  386. according  to  the Motorola User Manuals. But why does the dratted machine crash
  387. when the MMU actually remains activated ? I pondered this for  a  while  and  my
  388. explanation  is  the  following: The RESET instruction is necessary to reset all
  389. expansion boards in the computer. It triggers the _hardware_ autoconfig  process
  390. that renders the expansion devices temporarily unaccessible until the autoconfig
  391. process has been completed. Unfortunately the 32 Bit memory on the  A2630  board
  392. is  an autoconfig memory device and thus the MMU table as well as the loaded ROM
  393. image vanishes into thin air for a short period of time during the reset process
  394. So what can be done to prevent this ? The easiest way is to just leave  out  the
  395. RESET  instruction  in  the  restart  routine  and to jump directly into the ROM
  396. restart code. This seems to work, BUT the expansion devices are not reconfigured
  397. when the RESET instruction is left out, i.e. there's no FastRam, SCSI, Gfx board
  398. etc. available when the computer reboots into the new OS. This cannot be borne.
  399. After some more pondering I devised the following solution: CpuControl  hooks  a
  400. RomTag  structure  into  the  system that contains some special reboot code. The
  401. RomTags are gathered and executed by the system's boot code after the  expansion
  402. devices  have been reconfigured (this is not so when you use a KickStart version
  403. below 2.0x. See Ralph  Babel's  Guru  Book  for  further  details  !!!).  Before
  404. CpuControl  restarts  the  computer it gathers some vital information concerning
  405. the installed expansion devices via the expansion.library. This  information  is
  406. stored  in  the  protected  RomTag  area  in  ChipMem (ChipMem is non-autoconfig
  407. memory, i.e. it  is  ALWAYS  acessible).  After  that  CpuControl  restarts  the
  408. machine.  At  this point of time the MMU is NOT activated, so that the important
  409. RESET instruction can be executed  without  crashing  the  computer.  Thus  your
  410. expansion devices are properly reconfigured (by hardware). After that the RomTag
  411. is executed for the first time. It sets up a MMU translation tree and  activates
  412. the address translation to replace the ROM with the loaded ROM image. The RomTag
  413. code then jumps directly into the reboot code of the ROM image and restarts  the
  414. machine  once  again  (without  RESET  instruction,  mind you !). Now the RomTag
  415. becomes executed once more. It uses the stored information about  the  expansion
  416. devices  to link them into the system again by the use of the expansion.library.
  417. This routine also adds all memory boards to the system's MemList. The last thing
  418. to  do  is  then to re-allocate the memory area containing the ROM image and the
  419. MMU table. After that the RomTag gives the control back to the normal boot code.
  420. Now the computer starts up with  the  new  OS  and  all  expansion  devices  are
  421. available  again  !  The  only aftertaste that remains is the ExecBase structure
  422. being left in Chip memory. This lowers the system's performance considerably  ;)
  423. (about 0.5% on my machine).
  424. The Restart routines do not use the ColdCapture and CoolCapture vectors and  the
  425. RomTag  is  linked  into  the  system  in  a compatible way, i.e. foreign RomTag
  426. structures are recognized and properly queued into the list of KickTag pointers.
  427. A kicked ROM image survives crashes and resets as long as the execbase structure
  428. is not damaged or destroyed.
  429. Well, if you think you need more information about this stuff then  contact  the
  430. @{"author" link "Document_3" 0}.
  431. @endnode
  432. @node "Document_10" "
  433. @{b}To do ... :@{ub}
  434. This paragraph contains a list with features I want(ed) to add to CpuControl. It
  435. depends  on  the feedback I get from YOU if these features become implemented in
  436. future releases. Any suggestions of functions you want to have added are  always
  437. welcome.
  438. To-Do list (random order):
  439. - FORCE switch for KICK option to override an already activated MMU
  440. - Kickstart patching to remove errors etc.
  441. - enhanced command line parser
  442. - Kickstart 1.x support or special 1.x version (maybe)
  443. - GUI-based version (maybe)
  444. - 68040/68060 support
  445. - relocate Execbase to Fastmem
  446. - messages have to be localized
  447. - FLUSH command to clean up memory
  448. @endnode
  449. @node "Document_11" "
  450. Troubleshooting
  451. @{b}Troubleshooting:@{ub}
  452. This paragraph is designed to shed some  light  on  common  problems  you  might
  453. discover whilst using CpuControl.
  454. First of all a list of CpuControl's error messages with hints about what  is  to
  455. be done when you stumble upon such a message:
  456. Message: 'Only 68020 and 68(EC)030 CPUs are supported'
  457. Meaning: CpuControl discovered a 68000 or 68040+ CPU.
  458. Remedy:  CASE 68000,68010 -=> buy a turboboard
  459.          CASE 68040,68060 -=> use Softboot
  460. Message: 'Not enough memory for FASTROM option'
  461. Meaning: Just what it says. You'll need at least a 512K block (non-fragmented !)
  462.          FastMem  plus  some  600 Bytes for the MMU table. I think it's not much
  463.          use to activate the FASTROM option with less than 2 Megs of FastRam.
  464. Remedy:  Plug in more memory.
  465. Message: 'Cant allocate sufficient memory for KICK option'
  466. Meaning: See above.
  467. Remedy:  See above.
  468. Message: 'Cant allocate sufficient memory for the RomTag'
  469. Meaning: There's not enough ChipMem available for the RomTag-Code. Less than  2K
  470.          of  ChipMem are needed to install the RomTag, so this message shouldn't
  471.          appear too frequently.
  472. Remedy:  Close some windows or screens, stop playing sound modules  or  samples,
  473.          remove any backdrop pictures on your WB screen, etc.
  474. Message: 'Not enough FastMem for option MOVEVBR available'
  475. Meaning: Just what it says. 1028 Bytes are required.
  476. Remedy:  Stop some running programs.
  477. Message: 'Too many arguments'
  478. Meaning: What could that mean ??? Ah, yes, you gave too many  arguments  on  the
  479.          command line.
  480. Remedy:  RTFM to figure out how to provide a decent command line.
  481. Message: 'Invalid argument(s)'
  482. Meaning: Obviously some crap was discovered while parsing the command line
  483. Remedy:  Check your typo !
  484. Message: 'Contradictory arguments'
  485. Meaning: You used a nonsense combination of arguments like CACHE NOCACHE.
  486. Remedy:  Re-think your comand line.
  487. Message: 'Missing filename for argument KICK'
  488. Meaning: No need to explain ...
  489. Remedy:  Provide a valid filename (+path) when using the KICK-option.
  490. Message: 'You need a functional MMU to use FASTROM'
  491. Meaning: Seems like you have a MC68EC030 CPU ! Or your MMU/CPU is defective  (or
  492.          you've discovered a bug in CpuControl's recognition code)
  493. Remedy:  Replace your CPU or buy another accelerator board.
  494. Message: 'A MMU is required to use the KICK option'
  495. Meaning: Like above ...
  496. Remedy:  Like above ...
  497. Message: 'Your MMU is already in use'
  498. Meaning: Some other program has already installed a MMU translation tree.  Check
  499.          out if the stock CPU command has been executed with the FASTROM keyword
  500.          or if some other MMU related programs like GigaMem, Enforcer,VMem, etc.
  501.          have been activated.
  502. Remedy:  Start CpuControl before any other program that uses the MMU.
  503. Message: 'Cant execute NOFASTROM'
  504. Meaning: CpuControl discovered that your MMU is activated, but  the  translation
  505.          table  was not built by CpuControl's FASTROM code. This message appears
  506.          when the stock CPU command has installed its FASTROM.
  507. Remedy:  Try to remove the FASTROM with CPU NOFASTROM.
  508. Message: 'Cant access specified file'
  509. Meaning: The file you named for the KICK option can not be found.
  510. Remedy:  Check filename and path.
  511. Message: 'Invalid KickStart file'
  512. Meaning: The file you want to softkick is obviously not a valid ROM image.
  513. Remedy:  Get a VALID image using the SaveROM program.
  514. Message: 'Cant open file'
  515. Meaning: The file you named for the KICK option can not be opened.
  516. Remedy:  Check the file.
  517. Message: 'Could not read from file'
  518. Meaning: There were errors while reading from the file.
  519. Remedy:  Check the file for errors.
  520. Message: 'Cannot reset VBR'
  521. Meaning: The VBR table cannot be removed from FastMem since it was not moved  by
  522.          CpuControl's MOVEVBR command.
  523. Remedy:  Check if some other program  was  executed  that  moves  the  VBR  into
  524.          FastMem (e.g. CPU with FASTROM option)
  525. Message: 'There is already a kickfile installed'
  526. Meaning: A kickfile has already been softkicked using CpuControl.
  527. Remedy:  Kill the softkicked ROM image using CpuControl's UNKICK option and  try
  528.          again.
  529. Message: 'Cant open expansion.library'
  530. Meaning: Just what it says. Shouldn't happen at all, though.
  531. Remedy:  ???
  532. Common problems with CpuControl:
  533. * Can't remember any at the moment
  534. Please  report  any  misbehaviour  and  malfunctions  to  one   of   the   given
  535. @{"addresses" link "Document_3" 0}.
  536. @endnode
  537. @node "Document_12" "
  538. History
  539. @{b}History:@{ub}
  540. This part contains an chronological overview of CpuControl's development process
  541. with information about changes, revisions, removed and discovered bugs, etc.
  542. V0.01     Date:   07/02/95
  543.                 
  544.           This revision and all later revisions up to  V1.00 remained unreleased
  545.           due to the fact that they were under constant development.
  546. V1.00     Date:   27/04/95
  547.           First version  with  all  functions  completely  implemented.  Kicking
  548.           another  OS  version  works  at least on my machine. Nevertheless this
  549.           release needs extensive testing and a rework in some aspects.
  550.                          
  551.           This version already works fine with GigaMem and all of  my  currently
  552.           installed expansion hardware (quite a lot).
  553.           Known Bugs: - Any program  calling  exec's  'ColdReboot'  leads  to  a
  554.                         system  deadlock in the reboot process. A keyboard reset
  555.                         revives the system in this  case  *without*  losing  the
  556.                         kicked OS !
  557.                                                        
  558.                       - A similar problem occurs when the Bootmenu is  activated
  559.                         (by pressing both mousebuttons during a reset). A system
  560.                         deadlock occurs after the Menu has been closed.  Another
  561.                         keyboard reset revives the system with the manipulations
  562.                         done in the menu taking effect.
  563. V1.01     Date:   01/05/95
  564.           Slightly improved version.
  565.           Changes:    - 'LVOColdReboot' is set to my own routine when the RomTag
  566.                         is executed. Any program using 'Coldreboot' now triggers
  567.                         a proper reset  without  system  deadlock.  The  library
  568.                         vector  is  changed  in a (more or less) system friendly
  569.                         manner via 'SetFunction'.
  570.                 
  571.           Known Bugs: - The Bootmenu still doesn't work correctly. This might be
  572.                         solved by patching the ROM image.
  573. V1.02     Date:   02/05/1995
  574.           Added options MOVEVBR and RESETVBR to  enhance  the  performance  when
  575.           handling  interrupts  and  exceptions.  Improved  program  info string
  576.           (option '?').
  577.                 
  578.           Known Bugs: - Performance drops sharply  (due  to  SysInfo)  when  the
  579.                         CACHE  option is used. Obviously the Freeze-Bits are set
  580.                         by accident, rendering the caches useless (Aaarrrrrgh).
  581. V1.03     Date:   03/05/1995
  582.           Performance loss when  using  CACHE  option  has  been  corrected.  No
  583.           further Bugs have been corrected :( .
  584. V1.04     Date:   04/05/1995
  585.           'MMU Status' string now displays information  about  the  current  MMU
  586.           user.  Only  CpuControl's own MMU tables are currently recognized, all
  587.           others are titled 'unknown user'. Again not much improvement :( .
  588. V1.05     Date:   08/05/1995
  589.           Changes:    - Patching of _LVOColdReboot via  'SetFunction'  has  been
  590.                         removed  since  it  didn't  work  at  all when using the
  591.                         Bootmenu. Now the ColdReboot code  in  the  Kickfile  is
  592.                         manipulated  to  meet  our needs. Result: Bootmenu works
  593.                         fine now ;) .
  594.           To do:      - Command line parsing while using templates 1 &  2  needs
  595.                         some  rework.  At  least one additional switch has to be
  596.                         implemented for the KICK option.
  597. V1.06     Date:   ??/??/??
  598. @endnode
  599.